package com.medical.data.service.impl;

import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.medical.data.component.TemplateTypeComponent;
import com.medical.data.domain.FormTemplateType;
import com.medical.data.exception.MyException;
import com.medical.data.mapper.FormTemplateTypeMapper;
import com.medical.data.service.FormTemplateTypeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.medical.data.utils.ResultCode;
import com.medical.data.vo.AddTemplateTypeVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author cj
 * @since 2024-02-14
 */
@Service
public class FormTemplateTypeServiceImpl extends ServiceImpl<FormTemplateTypeMapper, FormTemplateType> implements FormTemplateTypeService {

    @Autowired
    private TemplateTypeComponent templateTypeComponent;

    @Override
    public void addTemplateType(AddTemplateTypeVo addTemplateTypeVo) {
        //查询是否已经存在
        String formTemplateType = addTemplateTypeVo.getFormTemplateType();
        String formTemplateName = addTemplateTypeVo.getFormTemplateName();
        FormTemplateType formTemplateType1 = baseMapper.selectOne(Wrappers.<FormTemplateType>lambdaQuery()
                .eq(FormTemplateType::getFormTemplateName, formTemplateName)
                .or().eq(FormTemplateType::getFormTemplateType, formTemplateType).select(FormTemplateType::getId));
        if (!ObjectUtils.isEmpty(formTemplateType1)){
            throw new MyException(ResultCode.ERROR.getCode(), "类型或者名字已存在");
        }
        FormTemplateType formTemplateType2 = new FormTemplateType();
        BeanUtils.copyProperties(addTemplateTypeVo,formTemplateType2);
        int insert = baseMapper.insert(formTemplateType2);
        if (insert<1)
            throw new MyException(ResultCode.ERROR.getCode(), "添加类型失败");
        //将数据添加到本地中
        templateTypeComponent.set(formTemplateType2);
    }
}
